﻿using Face8280WebSocketServer.Utility.VerifyAttribute;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace Face8280WebSocketServer.Controllers.FaceDevice
{
    /// <summary>
    /// 新增人员权限的接口
    /// </summary>
    public class DeviceAccessAddParameter
    {
        /// <summary>
        /// 授权的门列表
        /// </summary>
        [Required]
        public List<int> DeviceIDs { get; set; }

        /// <summary>
        /// 授权的人员
        /// </summary>
        [Required]
        public List<int> PeopleIDs { get; set; }

        /// <summary>
        /// 需要进行的权限操作
        /// 1--授权；0--删除权限
        /// </summary>
        [VerifyNumRange(iRange: new int[] { 0, 1 },
                       errCode: 3, sErrorDesc: "权限操作类型错误，1--授权；0--删除权限")]
        public int AccessType { get; set; }

        /// <summary>
        /// 人员角色 0,普通人员；1，管理员
        /// </summary>
        [VerifyNumRange(iRange: new int[] { 0, 1, 2 },
                       errCode: 4, sErrorDesc: "人员角色类型错误，0,普通人员；1，管理员；2--黑名单")]
        public int EmployeeRoot { get; set; }

        /// <summary>
        /// 开门时段组号
        /// </summary>
        [VerifyNum(iMax: 64, iMin: 1,
                    errCode: 5, sErrorDesc: "开门时段范围错误，(范围 1-64)")]
        public int TimeGroupID { get; set; }

        /// <summary>
        /// 通行开始时间（年-月-日 时：分：秒，例 如：”2020-03-06 16:45:20”）
        /// </summary>
        public DateTime DevicePassStart { get; set; }
        /// <summary>
        /// 通行结束时间（年-月-日 时：分：秒，例 如：”2020-03-06 16:45:20”）
        /// </summary>
        public DateTime DevicePassEnd { get; set; }

        /// <summary>
        /// 通行时间限制  0:通行时间不限制 1:根据通行时间限制
        /// </summary>
        [VerifyNumRange(iRange: new int[] { 0, 1 },
                       errCode: 8, sErrorDesc: " 通行时间限制错误  0:通行时间不限制 1:根据通行时间限制")]
        public int DevicePassTimeOver { get; set; }

        /// <summary>
        /// 0 无限通行次数，其他：通行次数
        /// </summary>
        [VerifyNum(iMax: int.MaxValue, iMin: 0,
                    errCode: 9, sErrorDesc: "通行次数超出范围，(范围 0-2147483647)")]
        public int DevicePassNumber { get; set; }
    }
}
